#ifndef CUSTOM_SYNC_ACTION_NODE_H
#define CUSTOM_SYNC_ACTION_NODE_H

#include <behaviortree_cpp_v3/action_node.h>
#include "task/abstract_task.h"
#include "abstract_custom_node.h"

namespace task::node
{
class CustomSyncActionNodeData;
class CustomSyncActionNode : public BT::SyncActionNode, public AbstractCustomNode
{
public:
    explicit CustomSyncActionNode(const std::string &name,
                                  const BT::NodeConfiguration &config,
                                  const std::shared_ptr<task::AbstractTask> &task);
    ~CustomSyncActionNode() override;

    BT::NodeStatus tick() override;

    AbstractTask *getTask() override;

    std::string toString(const std::string& prefix = "") const override;

private:
    DECLARE_DATA(CustomSyncActionNode)
};

}


#endif //CUSTOM_SYNC_ACTION_NODE_H
